Insurance carriers send out and receive high volumes of invoices and payments. Performing reconciliation of such volumes of invoices using the payments can be time-consuming and resource-intensive. Further compounding the difficulty of performing reconciliation is that the manner in which payments are to be applied may depend on a variety of factors. Given the high volume of payments to be processed and the myriad scenarios that may affect how the payments should be applied, performing payment reconciliation can be complex and error-prone for billing agents using existing payment systems. Moreover, whenever a policy owner makes changes to the policies, it is frequently difficult to determine how the changes would affect payments and how to incorporate the changes in the existing payment processing flow. Existing systems often require changes to be specially programmed.